﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ComunesMGI.DataTypes;
using ClienteWinMGI.Logica;
using ComunesMGI.Mensajes;

namespace ClienteWinMGI.Presentacion
{
    public partial class ModificarSistema : Form
    {
        private DataSistema _sistema;
        private List<DataCliente> _clientes;

        public ModificarSistema(DataSistema ds)
        {
            InitializeComponent();
            //limpio el validator
            _sistema = ds;
            ClearValidator();
            CargarValoresPorDefecto();
        }

        public void CargarClientes()
        {
            try
            {
                IClientes ic = LogicaFactory.getInstance().getIClientes();
                _clientes = ic.GetClientes();
                int i = 0;
                foreach (DataCliente dc in _clientes)
                {
                    cboCliente.Items.Add(dc.Nombre);
                    if (_sistema.CodCliente == dc.Codigo)
                    {
                        cboCliente.SelectedIndex = i;
                    }
                    i++;
                }
               


            }
            catch (Exception ex)
            {
                MsgError err = new MsgError("Error", "Error al cargar los clientes", ex.Message);
                err.ShowDialog();
            }
        }

        public void CargarValoresPorDefecto()
        {
            CargarClientes();
            txtSistema.Text = _sistema.Nombre;
            txtSitio.Text = _sistema.Sitio;
            textBoxURLWS.Text = _sistema.UrlWS;
        }

        private void ClearValidator()
        {
            imgValidator.Visible = false;
            lblValidator.Visible = false;
        }

        private void ShowValidator(string textoValidator)
        {
            imgValidator.Visible = true;
            lblValidator.Visible = true;
            lblValidator.Text = textoValidator;
        }

        private void cboCliente_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void btnAgregarCliente_Click(object sender, EventArgs e)
        {

            try
            {
                if (cboCliente.SelectedIndex == -1)
                {
                    ShowValidator("Debe seleccionar un cliente");
                }
                else
                {
                    if (txtSistema.Text == "")
                    {
                        ShowValidator("Debe ingresar el nombre del sistema");
                    }
                    else
                    {
                        if (txtSitio.Text == "")
                        {
                            ShowValidator("Debe ingresar el sitio");
                        }
                        else
                        {
                            if (textBoxURLWS.Text == "")
                            {
                                ShowValidator("Debe ingresar la url del web service");
                            }
                            else
                            {
                                //ingreso todos los campos
                                DataCliente actualDc = _clientes.First(dc => dc.Nombre == cboCliente.SelectedItem.ToString());
                                DataSistema ds = new DataSistema(_sistema.Codigo, txtSistema.Text, txtSitio.Text,actualDc.Codigo, textBoxURLWS.Text);
                                ISistemas iSis= LogicaFactory.getInstance().getISistemas();
                                //llamo al modificar sistema
                                iSis.ModificarSistema(ds);
                                MsgNotificacion notif = new MsgNotificacion("Modificación exitosa", "", "Se ha modificado con éxito los datos del sistema");
                                notif.ShowDialog();
                                this.Close();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MsgError err = new MsgError("Error", "", ex.Message);
                err.ShowDialog();
            }
        }

        private void btnCancelarCliente_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtSistema_TextChanged(object sender, EventArgs e)
        {
            ClearValidator();
        }

        private void txtSitio_TextChanged(object sender, EventArgs e)
        {
            ClearValidator();
        }

        private void textBoxURLWS_TextChanged(object sender, EventArgs e)
        {
            ClearValidator();
        }
        
        



    }
}
